home *** CD-ROM | disk | FTP | other *** search
/ Aminet 52 / Aminet 52 (2002)(GTI - Schatztruhe)[!][Dec 2002].iso / Aminet / mus / play / DelfMPEG.lha / DelfMPEG / src / MP2.a56 < prev    next >
Text File  |  2002-10-30  |  63KB  |  1,596 lines

  1. ;*****************************************************************************
  2. ;
  3. ;    DelfMPEG - MPEG audio player for Delfina DSP
  4. ;    Copyright (C) 1999-2002  Michael Henke
  5. ;
  6. ;    This program is free software; you can redistribute it and/or modify
  7. ;    it under the terms of the GNU General Public License as published by
  8. ;    the Free Software Foundation; either version 2 of the License, or
  9. ;    (at your option) any later version.
  10. ;
  11. ;    This program is distributed in the hope that it will be useful,
  12. ;    but WITHOUT ANY WARRANTY; without even the implied warranty of
  13. ;    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14. ;    GNU General Public License for more details.
  15. ;
  16. ;    You should have received a copy of the GNU General Public License
  17. ;    along with this program; if not, write to the Free Software
  18. ;    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19. ;
  20. ;*****************************************************************************
  21.  
  22.  
  23.  
  24. ;Delfina object DSP56K_MP2
  25. ;memory map (for Amiga access)
  26. ;
  27. ; prog
  28. ;   0 .. init (x1=mem_mp2, x0=mem_mp2p, y1=/, y0=/)
  29. ;  +2 .. decode MP2 frame (x1=mono, x0=outbuf, y1=translate, y0=jsbound)
  30. ;
  31. ; xdata
  32. ; +2048 .. inbuf (Amiga write)
  33. ;
  34. ; ydata
  35. ;   0 .. busy (Amiga read only, TRUE (NON-ZERO) if decoder is running)
  36. ;   1 .. forcemono (Amiga write)
  37.  
  38.  
  39.  
  40.     org    p:
  41.  
  42. ;->prog
  43.     jmp    init
  44.  
  45. ;->prog+2
  46.  
  47. ;*****************************************************************************
  48. ;
  49. ; **** MPEG1 layer II frame decoder ****
  50. ;
  51. ; parameters
  52. ;  x1 - mono          (mono: not_zero, stereo: zero)
  53. ;  x0 - output buffer (mono: x: only,  stereo: x: left, y: right)
  54. ;  y1 - translate     (for sblimit, bitalloc, quantization)
  55. ;  y0 - jsbound
  56. ;
  57. ;  xdata+2048 - input buffer (frame data without header, max. 1788 bytes)
  58. ;
  59. ;
  60. ; based on the mp2 player for Atari Falcon by Fredrik Noring
  61. ; Delfina DSP programming by Smack/Infect!
  62. ;
  63. ;
  64. ; (Thu 07-Oct-1999) - first beta version, mono decoding doesn't work
  65. ; (Fri 15-Oct-1999) - code cleanup+optimizing, little speedup
  66. ;                     (getbits loop, rsinx_rcosx table to internal mem)
  67. ;                     fixed mono decoding (decode_subbands bug: #>2+3)
  68. ; (Sun 28-Nov-1999) - little code optimizing and speedup
  69. ;                     (bfy1_loop, unscramble_loop to internal mem)
  70. ; (Sun 09-Jan-2000) - subband synthesis routine optimized
  71. ;                     (little speedup, slightly shorter code, now it needs
  72. ;                     about 24% DSP time on my Delfina1200 for 44.1kHz)
  73. ; (Wed 16-Feb-2000) - fixed the 'low-bitrate bug'
  74. ;                   - playback quality slightly improved
  75. ;                     (fixed the little known 'intermediate ZERO-bitalloc bug')
  76. ;                   - added DSP overload detection (y:busy)
  77. ; (Mon 03-Apr-2000) - added FORCEMONO feature (only left channel is decoded)
  78. ; (Wed 26-Apr-2000) - optimized synthesis routine (significant speedup!)
  79. ; (Tue 29-Oct-2002) - synthesis: corrected output level
  80. ;
  81. ;*****************************************************************************
  82.  
  83.  
  84.     move    x0,x:synth_out_p    ;store output pointer
  85.  
  86.     tfr    x1,a    #>1,x0        ;a=mono
  87.     tst    a    #>2,a
  88.     tne    x0,a
  89.     move    a,x:channels        ;store channels
  90.  
  91.     move    a,y:busy        ;set BUSY to non-zero
  92.  
  93.     move    y1,n0            ;translate
  94.     move    #table_translate_sblimit,r0
  95.  
  96.     move    y1,x:translate
  97.  
  98.     move    y0,x:jsbound        ;store jsbound
  99.  
  100.     move    y:(r0+n0),y1
  101.     move    #table_translate_alloc,r0
  102.     move    y1,x:sblimit
  103.     move    y:(r0+n0),y1
  104.     move    #table_translate_quantizations,r0
  105.     move    y1,x:decoder_nbals
  106.     move    y:(r0+n0),y1
  107.     move    y1,x:decoder_quantizations
  108.  
  109. ;    ** compute audio buffer modifiers
  110.     move    #>$7ff,x0
  111.     move    #>128,x1
  112. ;;    move    x:channels,b
  113. ;>>> forcemono
  114.     move    #>1,y0
  115.     move    y:forcemono,a
  116.     tst    a    x:channels,b
  117.     tne    y0,b
  118. ;<<<
  119.     move    #>2,y0
  120.     move    #>$3ff,a
  121.     cmp    y0,b    #>64,b
  122.     teq    x0,a
  123.     teq    x1,b
  124.     move    a,x:synth_audio_mask
  125.     move    b,x:synth_audio_delta
  126.  
  127. ;    ** calculate deltas for the cosine transform
  128.     move    x:channels,a
  129.     lsl    a    a,y0
  130.     add    y0,a
  131.     move    a,x:synth_imfct_delta
  132.  
  133. ;    ** clear fraction
  134.     clr    a    #decoder_fraction,r0
  135.     ;rep    #2*32*3
  136.     do    #2*32*3,clear_loop
  137.     move    a1,x:(r0)+
  138. clear_loop
  139.  
  140. ;    ** reset getbits
  141.     move    #getbits_temp,r0
  142.     move    #inbuf,x0
  143.     move    x0,x:getbits_stream_p
  144.     move    #$800000,a1
  145.     move    a1,x:(r0)    ;initialize 'current bitstream word'
  146.  
  147.  
  148.  
  149.  
  150.  
  151.  
  152. ;******************************************************************
  153. ;decode_scales
  154. ;    ** getbits_init
  155.     move    x:getbits_stream_p,r7
  156.     move    #getbits_temp,r6
  157.     move    x:decoder_getbits_loop_p,r5
  158.  
  159. ;    **
  160. ;    ** fetch bit allocation table
  161. ;    **
  162.     clr    b    x:channels,y0
  163.     move    x:jsbound,y1
  164.     move    x:decoder_nbals,r0
  165.     move    #decoder_bitalloc,r1
  166.  
  167. ;    ** loop until jsbound
  168.     move    y:(r0)+,n7        ; nbal
  169.     move    #>1,x1
  170.     do    y1,sb_loop0    ;jsbound
  171.     do    y0,ch_loop0    ;channels
  172.     clr    a    b,x0        ;save b
  173.     move    x:(r6),b1        ;current bitstream word
  174.     jsr    (r5)            ;-getbits- read nbal bits
  175.     tfr    x0,b    b1,x:(r6)    ;restore b
  176.     add    x1,b    a,x:(r1)+    ;b=b+1
  177. ch_loop0
  178.     move    y:(r0)+,n7        ; nbal
  179. sb_loop0
  180. ;    ** loop until sblimit (for joint-stereo only)
  181.     move    x:sblimit,a
  182.     sub    y1,a    b,y0
  183.     jle    sb_loop1        ; not joint-stereo
  184.     do    a,sb_loop1    ;sblimit-jsbound
  185.     clr    a    b,x0        ;save b
  186.     move    x:(r6),b1        ;current bitstream word
  187.     jsr    (r5)            ;-getbits- read nbal bits
  188.     tfr    x0,b    b1,x:(r6)    ;restore b
  189.     add    x1,b    a,x:(r1)+
  190.     add    x1,b    y:(r0)+,n7        ; nbal
  191.     move        a,x:(r1)+    b,y0    ;b=b+2
  192. sb_loop1
  193.  
  194.     move    x:(r6),b1    ;current bitstream word
  195.  
  196. ;    **
  197. ;    ** fetch scalefactor selection information
  198. ;    **
  199.     move    #decoder_scfsi,r0
  200.     move    #decoder_bitalloc,r4
  201.     move    r4,r3
  202.     move    #2,n7            ; 2 bit scfsi
  203.     do    y0,sf_loop0    ;sblimit*channels
  204.     move    x:(r3)+,a        ;check bitalloc
  205.     tst    a    #0,a
  206.     jsne    (r5)            ;-getbits-
  207.     move    a,x:(r0)+
  208. sf_loop0
  209.  
  210. ;    **
  211. ;    ** fetch scale factors
  212. ;    **
  213.     move    #decoder_scfsi,r0
  214.     move    #decoder_scalefactor,r1
  215.     move    #6,n7            ; 6 bit scalefactors
  216.     do    y0,sf_loop1    ;sblimit*channels
  217.  
  218.     clr    a    x:(r4)+,x0    ;check bitalloc
  219.     cmp    x0,a    x:(r0)+,x0
  220.     jeq    sf_ba0
  221.  
  222.     cmp    x0,a    #>1,a
  223.     jne    sf_c1
  224.     clr    a
  225.     jsr    (r5)            ;-getbits- all three
  226.     clr    a    a,x:(r1)+
  227.     jsr    (r5)            ;-getbits-
  228.     clr    a    a,x:(r1)+
  229.     jsr    (r5)            ;-getbits-
  230.     jmp    sf_resume
  231.  
  232. sf_c1    cmp    x0,a    #>2,a
  233.     jne    sf_c2
  234.     clr    a
  235.     jsr    (r5)            ;-getbits- 1 + 3
  236.     move    a,x:(r1)+
  237.     clr    a    a,x:(r1)+
  238.     jsr    (r5)            ;-getbits-
  239.     jmp    sf_resume
  240.  
  241. sf_c2    cmp    x0,a    #0,a
  242.     jne    sf_c3
  243.     jsr    (r5)            ;-getbits- just one
  244. sf_ba0    move    a,x:(r1)+
  245.     move    a,x:(r1)+
  246.     jmp    sf_resume
  247.  
  248. sf_c3    jsr    (r5)            ;-getbits- 1 + 2
  249.     clr    a    a,x:(r1)+
  250.     jsr    (r5)            ;-getbits-
  251.     move    a,x:(r1)+
  252.  
  253. sf_resume
  254.     move    a,x:(r1)+
  255. sf_loop1
  256.  
  257.  
  258.     move    b1,x:(r6)
  259.  
  260. ;    ** getbits_exit
  261.     move    r7,x:getbits_stream_p
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.     move    #>decoder_scalefactor+0,x0
  269.     move    x0,x:decoder_sf_granule
  270.     move    #>decode_return00,x0
  271.     jmp    decode_samples        ;avoid stack overflow!
  272. decode_return00
  273.     move    #>decode_return01,x0
  274.     jmp    decode_samples        ;avoid stack overflow!
  275. decode_return01
  276.     move    #>decode_return02,x0
  277.     jmp    decode_samples        ;avoid stack overflow!
  278. decode_return02
  279.     move    #>decode_return03,x0
  280.     jmp    decode_samples        ;avoid stack overflow!
  281. decode_return03
  282.  
  283.     move    #>decoder_scalefactor+1,x0
  284.     move    x0,x:decoder_sf_granule
  285.     move    #>decode_return10,x0
  286.     jmp    decode_samples        ;avoid stack overflow!
  287. decode_return10
  288.     move    #>decode_return11,x0
  289.     jmp    decode_samples        ;avoid stack overflow!
  290. decode_return11
  291.     move    #>decode_return12,x0
  292.     jmp    decode_samples        ;avoid stack overflow!
  293. decode_return12
  294.     move    #>decode_return13,x0
  295.     jmp    decode_samples        ;avoid stack overflow!
  296. decode_return13
  297.  
  298.     move    #>decoder_scalefactor+2,x0
  299.     move    x0,x:decoder_sf_granule
  300.     move    #>decode_return20,x0
  301.     jmp    decode_samples        ;avoid stack overflow!
  302. decode_return20
  303.     move    #>decode_return21,x0
  304.     jmp    decode_samples        ;avoid stack overflow!
  305. decode_return21
  306.     move    #>decode_return22,x0
  307.     jmp    decode_samples        ;avoid stack overflow!
  308. decode_return22
  309.     move    #>decode_return23,x0
  310.     jmp    decode_samples        ;avoid stack overflow!
  311. decode_return23
  312.  
  313.  
  314. ;    do    #500,overload0
  315. ;    do    #1000,overload1
  316. ;    nop
  317. ;overload1
  318. ;    nop
  319. ;overload0
  320.  
  321.  
  322. ;exit
  323.     move    #0,x0
  324.     move    x0,y:busy        ;clear BUSY
  325.     rts
  326.  
  327.  
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.  
  335.  
  336. ;******************************************************************
  337. decode_samples
  338.     move    x0,x:decode_rts_p
  339.  
  340. ;    ** getbits_init
  341.     move    x:getbits_stream_p,r7
  342.     move    #getbits_temp,r6
  343.     move    x:decoder_getbits_loop_p,r5
  344.  
  345.  
  346.  
  347.     move    #decoder_bitalloc,r0
  348.     move    #decoder_fraction,r1
  349.     move    #2,n1
  350.     move    x:decoder_quantizations,r2
  351.     move    #16,n2
  352.  
  353.     move    x:jsbound,a
  354.     lsl    a    x:decoder_sf_granule,x0
  355.     move    x0,x:decoder_sfp
  356.     move    a,x:decoder_joint_countdown
  357.  
  358. ;    **
  359. ;    ** read+decode samples from bitstream
  360. ;    **
  361.     move    x:sblimit,x0
  362.     move    x0,x:decode_ds_sblimit_count
  363. ds_sb_loop_head
  364.     move    x:decode_ds_sblimit_count,a
  365.     move    #>1,x0
  366.     sub    x0,a    x:channels,x0
  367.     jmi    ds_sb_loop        ;'low-bitrate bug' - jeq
  368.     move    a,x:decode_ds_sblimit_count
  369.  
  370.     do    x0,ds_ch_loop        ;channels
  371.  
  372. ;    ** update joint-stereo counter and check bitalloc
  373.     move    #>1,x0
  374.     move    x:decoder_joint_countdown,b
  375.     sub    x0,b    x:(r0)+,a
  376.     tst    a    b,x:decoder_joint_countdown
  377.     jne    ds_samples
  378.  
  379. ;    ** fill with zeroes
  380.     move    a,x:(r1)+
  381.     move    a,x:(r1)+
  382.     move    a,x:(r1)-n1
  383.     jmp    ds_scalefactor_adjust
  384.  
  385. ds_samples
  386. ;    ** check if joint-stereo applies
  387.     move    x:decoder_old_samples_p,r4
  388.     jclr    #23,b1,ds_no_joint
  389.     jset    #0,b1,ds_no_joint
  390.  
  391. ;    ** copy old samples for joint-stereo
  392.     move            y:(r4)+,a
  393.     move    a,x:(r1)+    y:(r4)+,a
  394.     move    a,x:(r1)+    y:(r4),a
  395.     move    a,x:(r1)-n1
  396.     jmp    ds_scalefactor_adjust
  397.  
  398. ds_no_joint
  399. ;    ** decode samples
  400.     move    a,n2
  401.     move    #table_bits,r3
  402.     move    y:(r2+n2),n3        ; quantization
  403.     move    #16,n2
  404.     move    y:(r3+n3),n7        ; bits
  405.  
  406.     clr    a    n3,y0
  407.     cmp    y0,a    #>1,a
  408.     jeq    ds_fetch_grouping
  409.     cmp    y0,a    #>3,a
  410.     jeq    ds_fetch_grouping
  411.     cmp    y0,a    n3,a
  412.     jeq    ds_fetch_grouping
  413.  
  414. ;    ** no grouping, fetch triplet
  415.     lsl    a    x:(r6),b1    ;current bitstream word
  416.     lsl    a    x:decoder_table_xmdc_p,r3
  417.     clr    a    a,n3
  418.     jsr    (r5)            ;-getbits-
  419.     move    b1,x:(r6)
  420.     move    (r3)+n3
  421.     move    #3,n3
  422.  
  423. ;    ** remove greatest bit and check
  424. ;    ** if the accumulator should be 0.0 or -1.0
  425.     clr    b    a,x1    y:(r3)+,y0    ; x
  426.     and    y0,a    #-0.5,y1
  427.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  428.     teq    y1,b
  429. ;    ** add constant `d', multiply with
  430. ;    ** the inverse, thus normalize sample,
  431. ;    ** and multiply with the constant `c'
  432.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  433.     add    y0,b    a0,y1
  434.     add    y1,b    y:(r3)-n3,y0        ; c
  435.     move    b,y1
  436.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  437.     move    b,x:(r1)+
  438.  
  439.     clr    a    x:(r6),b1    ;current bitstream word
  440.     jsr    (r5)            ;-getbits-
  441.     move    b1,x:(r6)
  442. ;    ** remove greatest bit and check
  443. ;    ** if the accumulator should be 0.0 or -1.0
  444.     clr    b    a,x1    y:(r3)+,y0    ; x
  445.     and    y0,a    #-0.5,y1
  446.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  447.     teq    y1,b
  448. ;    ** add constant `d', multiply with
  449. ;    ** the inverse, thus normalize sample,
  450. ;    ** and multiply with the constant `c'
  451.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  452.     add    y0,b    a0,y1
  453.     add    y1,b    y:(r3)-n3,y0        ; c
  454.     move    b,y1
  455.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  456.     move    b,x:(r1)+
  457.  
  458.     clr    a    x:(r6),b1    ;current bitstream word
  459.     jsr    (r5)            ;-getbits-
  460.     move    b1,x:(r6)
  461. ;    ** remove greatest bit and check
  462. ;    ** if the accumulator should be 0.0 or -1.0
  463.     clr    b    a,x1    y:(r3)+,y0    ; x
  464.     and    y0,a    #-0.5,y1
  465.     cmp    x1,a    a,x1    y:(r3)+,y0    ; m
  466.     teq    y1,b
  467. ;    ** add constant `d', multiply with
  468. ;    ** the inverse, thus normalize sample,
  469. ;    ** and multiply with the constant `c'
  470.     mpy    y0,x1,a    y:(r3)+,y0        ; d
  471.     add    y0,b    a0,y1
  472.     add    y1,b    y:(r3)-n3,y0        ; c
  473.     move    b,y1
  474.     macr    y0,y1,b        ; remember that c is subtracted by 1.0!
  475.     move    b,x:(r1)-n1
  476.  
  477.     jmp    ds_scalefactor_adjust
  478.  
  479.  
  480. ds_fetch_grouping
  481. ;    ** fetch grouped triplet
  482.     move    #table_grouping,r3
  483.  
  484.     clr    a    x:(r6),b1    ;current bitstream word
  485.     jsr    (r5)            ;-getbits-
  486.  
  487.     lsl    a    a,x0
  488.     add    x0,a    y:(r3+n3),r4
  489.     move    a,n4
  490.  
  491.     move    b1,x:(r6)
  492.  
  493.     move    (r4)+n4
  494.     move            y:(r4)+,a
  495.     move    a,x:(r1)+    y:(r4)+,a
  496.     move    a,x:(r1)+    y:(r4),a
  497.     move    a,x:(r1)-n1
  498.  
  499.  
  500. ds_scalefactor_adjust
  501. ;    ** multiply samples with the
  502. ;    ** corresponding scalefactors
  503.     move    x:decoder_sfp,r3
  504.     move    #3,n3
  505.     move    x:decoder_old_samples_p,r4
  506.     move    x:(r3)+n3,n3
  507.     move    r3,x:decoder_sfp
  508.     move    #table_multiple,r3
  509.     move        x:(r1)+,x0
  510.     tfr    x0,a            y:(r3+n3),y1
  511.     mpyr    x0,y1,b    x:(r1)-,x0    a,y:(r4)+    ;old samples
  512.     mpyr    x0,y1,a    b,x:(r1)+n1    x0,b
  513.     move        x:(r1)-,x0    b,y:(r4)+    ;old samples
  514.     mpyr    x0,y1,b    a,x:(r1)+    x0,a
  515.     move        b,x:(r1)+    a,y:(r4)    ;old samples
  516.  
  517. ds_ch_loop
  518.     move    (r2)+n2        ; update next to quantization
  519.     jmp    ds_sb_loop_head
  520. ds_sb_loop
  521. ;    ** getbits_exit
  522.     move    r7,x:getbits_stream_p
  523.  
  524.  
  525.  
  526.  
  527. ;    move    x:decode_rts_p,r0
  528. ;    nop
  529. ;    jmp    (r0)            ;'rts'-replacement
  530.  
  531.  
  532.  
  533. ;******************************************************************
  534. ;subband synthesis
  535.  
  536.     move    #>decoder_fraction,x0
  537.     move    x0,x:synth_imfct_fraction_p
  538.  
  539.     move    #3,n0
  540.     move    n0,x:decode_tr3_count
  541. synth_tr_loop_head
  542.  
  543.     move    x:synth_imfct_fraction_p,r0
  544.  
  545.     move    x:synth_pcm64_p,x0
  546.     move    x0,x:synth_pcm_p
  547.  
  548. ;;    move    x:channels,b            ;1 or 2
  549. ;>>> forcemono
  550.     move    #<0,x0        ;#>1,x0
  551.     move    y:forcemono,a
  552.     tst    a    x:channels,b
  553.     tne    x0,b
  554. ;<<<
  555.  
  556. synth_ch_loop_head
  557.     lsr    b    x:synth_imfct_p,n7    ;x:synth_imfct_p    !! n7
  558.     move    b,x:decode_channels_count    ;0 or 1
  559.  
  560. ;    **
  561. ;    ** perform inverse modified fast cosine transform
  562. ;    **
  563.  
  564.  
  565. ;    ** first butterfly pass
  566.     move    x:synth_imfct_delta,n0
  567.     move    n7,r1                ;x:synth_imfct_p
  568.     move    n7,r5
  569.     move    #0.70710678,y0            ;cos(pi/4)
  570.     move            x:(r0)+n0,x0
  571.     do    #8,synth_bfy1
  572.     mpyr     x0,y0,a    x:(r0)+n0,x0
  573.     mpyr    -x0,y0,a    a,x:(r1)+    a,y:(r5)+
  574.     move            a,x:(r1)+
  575.     mpyr     x0,y0,a    x:(r0)+n0,x0
  576.     mpyr    -x0,y0,a    x:(r0)+n0,x0    a,y:(r5)+
  577.     mpyr     x0,y0,a    a,x:(r1)+    a,y:(r5)+
  578.     mpyr    -x0,y0,a    a,x:(r1)+
  579.     move            x:(r0)+n0,x0    a,y:(r5)+
  580. synth_bfy1
  581.  
  582. ;    ** second butterfly pass
  583.     move    n7,a                ;x:synth_imfct_p
  584.     move    #>16,x0
  585.     add    x0,a    a,r0
  586.     add    x0,a    a,r4
  587.     add    x0,a    a,r6
  588.     move        a,r5
  589.     lua    (r0)+,r7
  590.     move            x:(r0),b    y:(r4),y0
  591.     do    #16,synth_bfy2
  592.     add    y0,b        x:(r4),x1    y:(r0),a
  593.     sub    x1,a        b,x:(r5)    y:(r0),b
  594.     add    x1,b        x:(r0),a    a,y:(r5)+
  595.     sub    y0,a        x:(r0),b    b,y:(r6)
  596.     sub    x1,b        a,x:(r6)+    y:(r0),a
  597.     sub    y0,a        b,x:(r4)    y:(r0),b
  598.     add    y0,b        x:(r0),a    a,y:(r4)+
  599.     add    x1,a        x:(r7)+,b    b,y:(r0)    ;!b
  600.     move            a,x:(r0)+    y:(r4),y0    ;!y0
  601. synth_bfy2
  602.  
  603. ;    ** perform the rest of the butterfly passes
  604.     move    x:synth_tab_rsincosx_p,n6    ;x:synth_tab_rsincosx_p    !! n6
  605.     move    n7,r0                ;x:synth_imfct_p
  606.     movec    #<64-1,m0            ;modulo-64 addressing
  607.     movec    #<64-1,m4            ;modulo-64 addressing
  608.  
  609. ;    ** pass 3
  610.     move    n6,r6                ;x:synth_tab_rsincosx_p
  611.     move    #<8,n0
  612.     move    #<8,n4
  613.     move    r0,r4
  614.     do    #4,synth_grp3
  615.     lua    (r0)+n0,r5
  616.     move    r5,r2
  617.     move            x:(r6),x0
  618.     move            x:(r0),b    y:(r5),y1
  619.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  620.     do    #8,synth_bfy3
  621.     macr    y0,x1,b        x:(r0),a
  622.     subl    b,a        b,x:(r0)    y:(r4)+,b
  623.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  624.     macr    x0,x1,b                y:(r0),a
  625.     subl    b,a        x:(r4),b    b,y:(r0)+
  626.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  627. synth_bfy3
  628.     move            x:(r0)+n0,x0    y:(r4)+n4,y0    ;update r0, r4
  629. synth_grp3
  630.  
  631.     movec    #<64-1,m2            ;modulo-64 addressing
  632.     movec    #<64-1,m5            ;modulo-64 addressing
  633.  
  634. ;    ** pass 4
  635.     move    n6,r6                ;x:synth_tab_rsincosx_p
  636.     move    #<4+0,n0
  637.     move    #<4+1,n2
  638.     move    #<4+1,n4
  639.     move    #<4+1,n5
  640.     lua    (r0)+n0,r5
  641.     move    r5,r2
  642.     move            x:(r6),x0
  643.     move            x:(r0),b    y:(r5),y1
  644.     do    #8,synth_grp4
  645.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  646.     macr    y0,x1,b        x:(r0),a
  647.     subl    b,a        b,x:(r0)    y:(r4)+,b
  648.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  649.     macr    x0,x1,b                y:(r0),a
  650.     subl    b,a        x:(r4),b    b,y:(r0)+
  651.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  652.     macr    y0,x1,b        x:(r0),a
  653.     subl    b,a        b,x:(r0)    y:(r4)+,b
  654.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  655.     macr    x0,x1,b                y:(r0),a
  656.     subl    b,a        x:(r4),b    b,y:(r0)+
  657.     mac    -x0,y1,b    x:(r2)+,x1    a,y:(r5)+
  658.     macr    y0,x1,b        x:(r0),a
  659.     subl    b,a        b,x:(r0)    y:(r4)+,b
  660.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  661.     macr    x0,x1,b                y:(r0),a
  662.     subl    b,a        x:(r4),b    b,y:(r0)+
  663.     mac    -x0,y1,b    x:(r2)+n2,x1    a,y:(r5)+    ;update r2
  664.     macr    y0,x1,b        x:(r0),a
  665.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  666.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  667.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  668.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  669.     move            x:(r0)+n0,a    a,y:(r5)+n5    ;update r0, r5
  670. synth_grp4
  671.  
  672. ;    ** pass 5
  673.     move    n6,r6                ;x:synth_tab_rsincosx_p
  674.     move    #<2+0,n0
  675.     move    #<2+1,n2
  676.     move    #<2+1,n4
  677.     move    #<2+1,n5
  678.     lua    (r0)+n0,r5
  679.     move    r5,r2
  680.     move            x:(r6),x0
  681.     move            x:(r0),b    y:(r5),y1
  682.     do    #16,synth_grp5
  683.     mac    -x0,y1,b    x:(r2)+,x1    y:(r6)+,y0
  684.     macr    y0,x1,b        x:(r0),a
  685.     subl    b,a        b,x:(r0)    y:(r4)+,b
  686.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1
  687.     macr    x0,x1,b                y:(r0),a
  688.     subl    b,a        x:(r4),b    b,y:(r0)+
  689.     mac    -x0,y1,b    x:(r2)+n2,x1    a,y:(r5)+    ;update r2
  690.     macr    y0,x1,b        x:(r0),a
  691.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  692.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  693.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  694.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  695.     move            x:(r0)+n0,a    a,y:(r5)+n5    ;update r0, r5
  696. synth_grp5
  697.  
  698.     ori    #$08,mr                ;SCALE UP mode
  699.  
  700. ;    ** pass 6
  701.     move    n6,r6                ;x:synth_tab_rsincosx_p
  702.     move    #<1+1,n2
  703.     move    #<1+1,n4
  704.     move    #<1+1,n5
  705.     lua    (r0)+,r5
  706.     move    r5,r2
  707.     move            x:(r6),x0
  708.     move            x:(r0),b    y:(r5),y1
  709.     do    #32,synth_grp6
  710.     mac    -x0,y1,b    x:(r2)+n2,x1    y:(r6)+,y0    ;update r2
  711.     macr    y0,x1,b        x:(r0),a
  712.     subl    b,a        b,x:(r0)    y:(r4)+n4,b    ;update r4
  713.     mac    y0,y1,b        a,x:(r5)    y:(r2),y1    ;!y1
  714.     macr    x0,x1,b        x:(r6),x0    y:(r0),a    ;!x0
  715.     subl    b,a        x:(r4),b    b,y:(r0)+    ;!b
  716.     move            x:(r0)+,a    a,y:(r5)+n5    ;update r0, r5
  717. synth_grp6
  718.  
  719.     movec    m7,m2                ;linear addressing
  720.     movec    m7,m4                ;linear addressing
  721.     movec    m7,m5                ;linear addressing
  722.  
  723. ;    ** unscrambling and final adjustments
  724.     move    x:synth_audio_p,r5
  725.     move    #>synth_tab_cosx,r4
  726.     move    #>synth_tab_sinx,r6
  727.     movec    #<0,m0                ;bit-reverse addressing
  728.     move    #<32,n0
  729.     move            x:(r0),x1    y:(r4)+,y1
  730.     mpy    y1,x1,a                y:(r6)+,y0
  731.     move                    y:(r0)+n0,y1
  732.     macr    -y0,y1,a    x:(r0),x1    y:(r4)+,y1
  733.     move                    y:(r6)+,y0
  734. synth_unscramble_start
  735. ;------    move    #synth_unscramble,r7
  736. ;------    jmp    <synth_unscramble_start
  737.     do    #64-1,synth_unscramble
  738.     mpy    y1,x1,a        a,x:(r5)+    y:(r0)+n0,y1
  739.     macr    -y0,y1,a    x:(r0),x1    y:(r4)+,y1
  740.     move                    y:(r6)+,y0
  741. synth_unscramble
  742. ;------    5+1 words, return: jmp (r7)
  743.     move            a,x:(r5)+
  744.  
  745.     andi    #$f3,mr                ;NO SCALING mode
  746.  
  747. ;    ** window audio data
  748.     move    x:synth_audio_p,r0
  749.     movec    x:synth_audio_mask,m0        ;modulo addressing
  750.     movec    m0,m1
  751.     move    x:synth_audio_delta,a
  752.     tfr    a,b        #>32,x0
  753.     add    x0,a        x:synth_pcm_p,r5
  754.     move    a,n0
  755.     lsl    b        #synth_tab_window,r4
  756.     lua    (r0)+n0,r1
  757.     move    x:synth_window_p,r3
  758.     move    b1,n0
  759.     move    b1,n1
  760.     ori    #$08,mr                ;SCALE UP mode
  761.     jsr    (r3)
  762.     andi    #$f3,mr                ;NO SCALING mode
  763.     move    r5,x:synth_pcm_p
  764.     movec    m7,m0                ;linear addressing
  765.     movec    m0,m1
  766.     
  767. ;    ** update pointer to next channel
  768.     move    #>3,x0
  769.     move    x:synth_imfct_fraction_p,a
  770.     add    x0,a        #>64,y0
  771.     move    a,r0
  772.  
  773.     move    x:synth_audio_p,a
  774.     add    y0,a        x:decode_channels_count,b
  775.     tst    b        a,x:synth_audio_p
  776.     jne    synth_ch_loop_head
  777.  
  778.  
  779. ;    ** finally: write audio data to output buffer
  780.     move    x:synth_out_p,r4
  781.     move    x:synth_pcm64_p,r0
  782.     move    #<31,n0
  783.     do    #32,synth_out_loop
  784.     move    x:(r0)+,x1
  785.     move            x:(r0+n0),x0
  786.     move            x,l:(r4)+
  787. synth_out_loop
  788.     move    r4,x:synth_out_p
  789.  
  790. ;    ** fraction pointer to next triplet
  791. ;    ** and update audio buffer pointers
  792.     move    x:synth_imfct_fraction_p,a
  793.     move    #>1,x0
  794.     move    x:synth_audio_p,r0
  795.     add    x0,a        x:synth_audio_delta,n0
  796.     move    a,x:synth_imfct_fraction_p
  797.     move    (r0)-n0
  798.     movec    x:synth_audio_mask,m0
  799.  
  800.     move    x:decode_tr3_count,a
  801.  
  802.     sub    x0,a    (r0)-n0
  803.     move    a,x:decode_tr3_count
  804.  
  805.     movec    #$ffff,m0
  806.     tst    a    r0,x:synth_audio_p
  807.     jne    synth_tr_loop_head
  808.  
  809.  
  810.  
  811.     move    x:decode_rts_p,r0
  812.     nop
  813.     jmp    (r0)            ;'rts'-replacement
  814.  
  815.  
  816.  
  817.  
  818.  
  819.  
  820.  
  821.  
  822.  
  823.  
  824.  
  825. synth_window_start
  826.     do    #32,synth_window
  827.     move            x:(r0)+n0,x0    y:(r4)+,y0
  828.     mpy    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  829.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  830.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  831.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  832.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  833.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  834.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  835.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  836.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  837.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  838.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  839.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  840.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  841.     mac    x0,y0,a        x:(r0)+n0,x0    y:(r4)+,y0
  842.     mac    x0,y0,a        x:(r1)+n1,x0    y:(r4)+,y0
  843.     macr    x0,y0,a        (r0)+
  844.     move            a,x:(r5)+    y:(r1)+,a    ;update r1
  845. synth_window
  846.     rts
  847. synth_window_end
  848. ;        ** 21 words
  849.  
  850.  
  851. synth_bfy1_help
  852.     jmp    (r7)
  853.     move    #synth_bfy1,r7
  854.  
  855. synth_unscramble_help
  856.     jmp    (r7)
  857.     move    #synth_unscramble,r7
  858.  
  859.  
  860.  
  861. getbits_loop_start
  862.     do    n7,getbits_loop
  863.     lsl    b            ;b1=b1<<1 (new CARRY bit)
  864.     jne    getbits_ne        ;(patch for short jump)
  865. getbits_cp
  866.     move    x:(r7)+,b1        ;fetch next 24 bits
  867.     rol    b            ;b1=b1<<1, append end marker
  868. getbits_ne
  869.     rol    a            ;get CARRY bit, set condition code ZERO
  870. getbits_loop
  871.     rts
  872. getbits_loop_end
  873. ;        ** 9 words (8 words with 'jne' short jump)
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887. ;*** initialize ************************
  888. ; parameters
  889. ;  x1 - mem_mp2 (64+32=96 words in INTERNAL L-memory)
  890. ;  x0 - mem_mp2p (21+6=27 words in INTERNAL P-memory)
  891. ;  y1 - /
  892. ;  y0 - /
  893. init
  894.  
  895. ;********* subband synthesis: fast L-data buffer for IMFCT routine
  896. ;********* (64 words - major speedup!!)
  897.     tfr    x1,a        #>64,x1
  898.     tst    a        #synth_tab_rsinxrcosx,r0
  899.     jeq    init_no_lmem
  900.     add    x1,a        a,x:synth_imfct_p
  901.  
  902. ;********* subband synthesis: rsinx_rcosx table to fast L-data memory
  903. ;********* (32 words - little speedup)
  904.     move    a,x:synth_tab_rsincosx_p
  905.     move    a,r4
  906.     move    x:(r0),a
  907.     do    #32,init_loop0
  908.     move    a,x:(r4)    y:(r0)+,a
  909.     move    x:(r0),a    a,y:(r4)+
  910. init_loop0
  911.  
  912.  
  913.  
  914.  
  915. init_no_lmem
  916.  
  917.     tfr    x0,a        #synth_window_start,r0
  918.     tst    a        x0,r1
  919.     jeq    init_no_pmem
  920.  
  921. ;********* subband synthesis: window loop to fast program memory
  922. ;********* (21 words - major speedup!!)
  923.     move    x0,x:synth_window_p
  924.     lua    (r1)+,r2
  925.     do    #synth_window_end-synth_window_start,init_loop1
  926.     movem    p:(r0)+,x1
  927.     movem    x1,p:(r1)+
  928. init_loop1
  929.     tfr    x0,a        #>synth_window-synth_window_start-1,x0
  930.     add    x0,a        #>synth_unscramble_start,r0
  931.     movem    a,p:(r2)        ;patch absolute address in 'do'
  932.  
  933.  
  934. ;********* subband synthesis: unscramble loop to fast program memory
  935. ;********* (6 words - tiny speedup)
  936.     move    r1,a
  937.     tfr    a,b        r0,r2
  938.     movem    p:(r0)+,x1
  939.     movem    x1,p:(r1)+        ;copy first word of 'do'
  940.     move    #>synth_unscramble-synth_unscramble_start-1,x0
  941.     add    x0,a        (r0)+
  942.     movem    a,p:(r1)+        ;second word of 'do' (absolute address)
  943.     do    #synth_unscramble-synth_unscramble_start-2,init_loop_p1
  944.     movem    p:(r0)+,x1
  945.     movem    x1,p:(r1)+        ;copy the rest
  946. init_loop_p1
  947.     move    #>synth_unscramble_help,r3
  948.     move    #>$0c0000,y0        ;short jump 'jmp xxx'
  949.     movem    p:(r3)+,x1
  950.     movem    x1,p:(r1)+        ;copy 'jmp (r7)'
  951.     movem    p:(r3)+,x1
  952.     movem    x1,p:(r2)+
  953.     movem    p:(r3),x1
  954.     movem    x1,p:(r2)+        ;copy 'move #synth_unscramble,r7'
  955.     or    y0,b
  956.     movem    b,p:(r2)        ;short jump 'jmp <synth_unscramble_start'
  957.  
  958.  
  959.  
  960. init_no_pmem
  961.     rts
  962.  
  963.  
  964.  
  965.  
  966.  
  967.  
  968.  
  969.     org    l:
  970.     align    64
  971.  
  972. synth_imfct_slow
  973.     ds    64
  974.  
  975. synth_tab_rsinxrcosx
  976. ;    **    x:rsinx        y:rcosx
  977.     dcl    0.000000,     0.999999
  978.     dcl    0.999999,     0.000000
  979.     dcl    0.707107,     0.707107
  980.     dcl    0.707107,    -0.707107
  981.     dcl    0.382683,     0.923880
  982.     dcl    0.923880,    -0.382683
  983.     dcl    0.923880,     0.382683
  984.     dcl    0.382683,    -0.923880
  985.     dcl    0.195090,     0.980785
  986.     dcl    0.980785,    -0.195090
  987.     dcl    0.831470,     0.555570
  988.     dcl    0.555570,    -0.831470
  989.     dcl    0.555570,     0.831470
  990.     dcl    0.831470,    -0.555570
  991.     dcl    0.980785,     0.195090
  992.     dcl    0.195090,    -0.980785
  993.     dcl    0.098017,     0.995185
  994.     dcl    0.995185,    -0.098017
  995.     dcl    0.773010,     0.634393
  996.     dcl    0.634393,    -0.773010
  997.     dcl    0.471397,     0.881921
  998.     dcl    0.881921,    -0.471397
  999.     dcl    0.956940,     0.290285
  1000.     dcl    0.290285,    -0.956940
  1001.     dcl    0.290285,     0.956940
  1002.     dcl    0.956940,    -0.290285
  1003.     dcl    0.881921,     0.471397
  1004.     dcl    0.471397,    -0.881921
  1005.     dcl    0.634393,     0.773010
  1006.     dcl    0.773010,    -0.634393
  1007.     dcl    0.995185,     0.098017
  1008.     dcl    0.098017,    -0.995185
  1009.  
  1010. decoder_old_samples_slow
  1011.     ds    3
  1012.  
  1013.  
  1014.  
  1015.  
  1016.  
  1017.  
  1018. ;;vars
  1019.  
  1020.     org    x:
  1021.     align    2048
  1022. synth_audio    ds    2048
  1023.  
  1024. ;->xdata+2048
  1025. inbuf    ds    596    ;MPG_MAXFRAMESIZE=1792-4
  1026.  
  1027.  
  1028. channels    ds    1
  1029. translate    ds    1
  1030. sblimit        ds    1
  1031. jsbound        ds    1
  1032.  
  1033. getbits_stream_p    ds    1
  1034. getbits_temp        ds    1
  1035. decoder_getbits_loop_p    dc    getbits_loop_start
  1036.  
  1037. decode_rts_p        ds    1
  1038. decode_ds_sblimit_count    ds    1
  1039. decode_tr3_count    ds    1
  1040. decode_channels_count    ds    1
  1041.  
  1042. ;    dc    "######bitalloc ######"
  1043. decoder_bitalloc    ds    2*32
  1044. ;    dc    "######scfsi    ######"
  1045. decoder_scfsi        ds    2*32
  1046. ;    dc    "######scalefact######"
  1047. decoder_scalefactor    ds    2*32*3
  1048. ;    dc    "######fraction ######"
  1049. decoder_fraction    ds    2*32*3
  1050. ;    dc    "######"
  1051. decoder_old_samples_p    dc    decoder_old_samples_slow
  1052. decoder_table_xmdc_p    dc    table_xmdc
  1053.  
  1054. decoder_sfp        ds    1
  1055. decoder_sf_granule    ds    1
  1056. decoder_quantizations    ds    1
  1057. decoder_nbals        ds    1
  1058. decoder_joint_countdown    ds    1
  1059.  
  1060.  
  1061. synth_out_p        ds    1
  1062. synth_audio_p        dc    synth_audio
  1063. synth_audio_mask    ds    1
  1064. synth_audio_delta    ds    1
  1065. synth_pcm_p        ds    1
  1066. synth_imfct_p        dc    synth_imfct_slow
  1067. synth_window_p        dc    synth_window_start
  1068. synth_tab_rsincosx_p    dc    synth_tab_rsinxrcosx
  1069. synth_imfct_fraction_p    ds    1
  1070. synth_imfct_delta    ds    1
  1071. synth_pcm64_p        dc    synth_pcm64_slow
  1072. synth_pcm64_slow    ds    64
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.     org    y:
  1079. busy        dc    0
  1080. forcemono    dc    0
  1081.  
  1082. synth_tab_window
  1083.     dc    $000000,$fff8c1,$003540,$ff8d41,$01fd40,$faf7c1,$066b80,$db63c1
  1084.     dc    $494780,$249c40,$066b80,$050840,$01fd40,$0072c0,$003540,$000740
  1085.     dc    $ffffc1,$fff841,$003680,$ff7e41,$01f400,$fa9cc1,$05d1c0,$d99601
  1086.     dc    $493c00,$22ce00,$06f780,$04ad00,$0203c0,$006440,$003400,$000680
  1087.     dc    $ffffc1,$fff741,$003780,$ff6ec1,$01e800,$fa4241,$052a00,$d7ca01
  1088.     dc    $491a00,$20ffc0,$077600,$045240,$020800,$0056c0,$003280,$000600
  1089.     dc    $ffffc1,$fff681,$003840,$ff5ec1,$01d940,$f9e8c1,$047440,$d60081
  1090.     dc    $48e180,$1f32c0,$07e700,$03f7c0,$0209c0,$004980,$003100,$000540
  1091.     dc    $ffffc1,$fff5c1,$0038c0,$ff4e41,$01c780,$f990c1,$03b000,$d43ac1
  1092.     dc    $489240,$1d6800,$084b00,$039e40,$020940,$003d00,$002f80,$0004c0
  1093.     dc    $ffffc1,$fff4c1,$003900,$ff3d41,$01b2c0,$f93a41,$02ddc0,$d279c1
  1094.     dc    $482d00,$1ba040,$08a200,$0345c0,$0206c0,$003140,$002dc0,$000440
  1095.     dc    $ffffc1,$fff3c1,$003900,$ff2c01,$019b00,$f8e641,$01fd40,$d0be81
  1096.     dc    $47b1c0,$19dc80,$08ecc0,$02ef00,$020240,$002640,$002c00,$000400
  1097.     dc    $ffff81,$fff2c1,$0038c0,$ff1a41,$017fc0,$f894c1,$010e80,$cf09c1
  1098.     dc    $4720c0,$181d80,$092b40,$0299c0,$01fc00,$001bc0,$002a40,$000380
  1099.     dc    $ffff81,$fff181,$003800,$ff0841,$016180,$f84681,$001180,$cd5cc1
  1100.     dc    $467a40,$166440,$095e00,$024680,$01f440,$001200,$002840,$000340
  1101.     dc    $ffff81,$fff041,$003740,$fef601,$014000,$f7fbc1,$ff0681,$cbb881
  1102.     dc    $45bf00,$14b140,$098580,$01f580,$01ea80,$000900,$002680,$0002c0
  1103.     dc    $ffff81,$ffef01,$0035c0,$fee3c1,$011ac0,$f7b541,$fded81,$ca1d81
  1104.     dc    $44ef80,$130580,$09a1c0,$01a700,$01dfc0,$000080,$0024c0,$000280
  1105.     dc    $ffff41,$ffedc1,$003400,$fed181,$00f280,$f77341,$fcc701,$c88d81
  1106.     dc    $440bc0,$1161c0,$09b3c0,$015b00,$01d380,$fff8c1,$0022c0,$000240
  1107.     dc    $ffff41,$ffec41,$003200,$febf41,$00c680,$f73681,$fb92c1,$c708c1
  1108.     dc    $431500,$0fc6c0,$09bb80,$0111c0,$01c640,$fff1c1,$002100,$000200
  1109.     dc    $ffff01,$ffeac1,$002f40,$fead01,$009740,$f6ff41,$fa5181,$c59081
  1110.     dc    $420b40,$0e3500,$09b9c0,$00cb80,$01b7c0,$ffeb41,$001f40,$0001c0
  1111.     dc    $ffff01,$ffe941,$002c40,$fe9b01,$006480,$f6ce01,$f90381,$c425c1
  1112.     dc    $40ef80,$0cad00,$09af00,$008840,$01a880,$ffe581,$001d40,$0001c0
  1113.     dc    $fffec1,$ffe7c1,$0028c0,$fe8981,$002e40,$f6a3c1,$f7a901,$c2c901
  1114.     dc    $3fc280,$0b2fc0,$099b80,$004800,$019880,$ffe041,$001bc0,$000180
  1115.     dc    $fffec1,$ffe601,$002480,$fe7841,$fff4c1,$f68041,$f64241,$c17b41
  1116.     dc    $3e84c0,$09bdc0,$097fc0,$000b40,$0187c0,$ffdb81,$001a00,$000140
  1117.     dc    $fffe81,$ffe441,$001fc0,$fe6781,$ffb801,$f66481,$f4d041,$c03d81
  1118.     dc    $3d3700,$085700,$095c40,$ffd1c1,$017680,$ffd741,$001840,$000140
  1119.     dc    $fffe41,$ffe2c1,$001a80,$fe5781,$ff77c1,$f65101,$f35301,$bf1081
  1120.     dc    $3bda40,$06fc80,$093200,$ff9b81,$016500,$ffd3c1,$0016c0,$000100
  1121.     dc    $fffe41,$ffe0c1,$0014c0,$fe4841,$ff3481,$f64641,$f1cb01,$bdf4c1
  1122.     dc    $3a6f80,$05ae80,$0900c0,$ff68c1,$015300,$ffd0c1,$001540,$000100
  1123.     dc    $fffe01,$ffdf01,$000e40,$fe39c1,$feee41,$f64481,$f03941,$bceb01
  1124.     dc    $38f740,$046d40,$08c980,$ff3981,$0140c0,$ffce01,$0013c0,$0000c0
  1125.     dc    $fffdc1,$ffdd41,$000740,$fe2c81,$fea501,$f64c41,$ee9e41,$bbf441
  1126.     dc    $377280,$033900,$088cc0,$ff0d81,$012e80,$ffcc01,$001240,$0000c0
  1127.     dc    $fffd81,$ffdb41,$ffff81,$fe2041,$fe5901,$f65e41,$ecfa81,$bb1081
  1128.     dc    $35e280,$021280,$084ac0,$fee541,$011c40,$ffca41,$001100,$000080
  1129.     dc    $fffd41,$ffd981,$fff701,$fe1581,$fe0a81,$f67a81,$eb4ec1,$ba4101
  1130.     dc    $344780,$00f980,$080440,$fec001,$010a00,$ffc8c1,$000fc0,$000080
  1131.     dc    $fffcc1,$ffd7c1,$ffee01,$fe0bc1,$fdb981,$f6a201,$e99bc1,$b985c1
  1132.     dc    $32a340,$ffee81,$07b980,$fe9e81,$00f7c0,$ffc801,$000e80,$000080
  1133.     dc    $fffc81,$ffd5c1,$ffe441,$fe0401,$fd6641,$f6d4c1,$e7e281,$b8df41
  1134.     dc    $30f640,$fef181,$076b40,$fe8041,$00e5c0,$ffc741,$000d40,$000080
  1135.     dc    $fffc01,$ffd401,$ffd9c1,$fdfdc1,$fd1101,$f71341,$e62381,$b84e41
  1136.     dc    $2f4180,$fe02c1,$0719c0,$fe6501,$00d400,$ffc701,$000c40,$000040
  1137.     dc    $fffbc1,$ffd241,$ffcec1,$fdf941,$fcba41,$f75e01,$e45fc1,$b7d301
  1138.     dc    $2d8640,$fd2241,$06c5c0,$fe4d41,$00c2c0,$ffc701,$000b40,$000040
  1139.     dc    $fffb41,$ffd081,$ffc301,$fdf6c1,$fc61c1,$f7b501,$e29801,$b76dc1
  1140.     dc    $2bc540,$fc5001,$066f40,$fe3881,$00b1c0,$ffc741,$000a40,$000040
  1141.     dc    $fffac1,$ffcf01,$ffb681,$fdf641,$fc0841,$f81901,$e0cd41,$b71e81
  1142.     dc    $29ff80,$fb8bc1,$061740,$fe26c1,$00a140,$ffc7c1,$000980,$000040
  1143.     dc    $fffa01,$ffcd81,$ffa941,$fdf801,$fbadc1,$f88a01,$df0041,$b6e601
  1144.     dc    $283600,$fad601,$05bdc0,$fe1801,$009140,$ffc881,$0008c0,$000040
  1145.     dc    $fff981,$ffcc01,$ff9bc1,$fdfc41,$fb5301,$f90881,$dd3201,$b6c401
  1146.     dc    $266a00,$fa2e41,$056340,$fe0c01,$0081c0,$ffc981,$0007c0,$000040
  1147. synth_tab_sinx
  1148.     dc    0.000000,0.049068,0.098017,0.146730    ;sine only
  1149.     dc    0.195090,0.242980,0.290285,0.336890
  1150.     dc    0.382683,0.427555,0.471397,0.514103
  1151.     dc    0.555570,0.595699,0.634393,0.671559
  1152.     dc    0.707107,0.740951,0.773010,0.803208
  1153.     dc    0.831470,0.857729,0.881921,0.903989
  1154.     dc    0.923880,0.941544,0.956940,0.970031
  1155.     dc    0.980785,0.989177,0.995185,0.998795
  1156. synth_tab_cosx
  1157.     dc    0.999999,0.998795,0.995185,0.989177    ;sine and cosine
  1158.     dc    0.980785,0.970031,0.956940,0.941544
  1159.     dc    0.923880,0.903989,0.881921,0.857729
  1160.     dc    0.831470,0.803208,0.773010,0.740951
  1161.     dc    0.707107,0.671559,0.634393,0.595699
  1162.     dc    0.555570,0.514103,0.471397,0.427555
  1163.     dc    0.382683,0.336890,0.290285,0.242980
  1164.     dc    0.195090,0.146730,0.098017,0.049068
  1165.     dc    0.000000,-0.049068,-0.098017,-0.146730    ;cosine only
  1166.     dc    -0.195090,-0.242980,-0.290285,-0.336890
  1167.     dc    -0.382683,-0.427555,-0.471397,-0.514103
  1168.     dc    -0.555570,-0.595699,-0.634393,-0.671559
  1169.     dc    -0.707107,-0.740951,-0.773010,-0.803208
  1170.     dc    -0.831470,-0.857729,-0.881921,-0.903989
  1171.     dc    -0.923880,-0.941544,-0.956940,-0.970031
  1172.     dc    -0.980785,-0.989177,-0.995185,-0.998795
  1173.  
  1174.  
  1175. ;; Sampling grouping tables.
  1176. table_grouping
  1177.     dc    table_quantization_group_0
  1178.     dc    table_quantization_group_1
  1179.     dc    0
  1180.     dc    table_quantization_group_3
  1181. table_quantization_group_0
  1182.     dc    $d55557,$d55557,$d55557,$000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557
  1183.     dc    $000000,$000000,$d55557,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557
  1184.     dc    $2aaaaa,$2aaaaa,$d55557,$d55557,$d55557,$000000,$000000,$d55557,$000000,$2aaaaa,$d55557,$000000
  1185.     dc    $d55557,$000000,$000000,$000000,$000000,$000000,$2aaaaa,$000000,$000000,$d55557,$2aaaaa,$000000
  1186.     dc    $000000,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$d55557,$d55557,$2aaaaa,$000000,$d55557,$2aaaaa
  1187.     dc    $2aaaaa,$d55557,$2aaaaa,$d55557,$000000,$2aaaaa,$000000,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa
  1188.     dc    $d55557,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$d55557,$d55557,$d55557
  1189.     dc    $000000,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$d55557,$000000,$d55557,$000000,$000000,$d55557
  1190. table_quantization_group_1
  1191.     dc    $ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce,$199999,$ccccce,$ccccce
  1192.     dc    $333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$e66668,$e66668,$ccccce,$000000,$e66668,$ccccce
  1193.     dc    $199999,$e66668,$ccccce,$333333,$e66668,$ccccce,$ccccce,$000000,$ccccce,$e66668,$000000,$ccccce
  1194.     dc    $000000,$000000,$ccccce,$199999,$000000,$ccccce,$333333,$000000,$ccccce,$ccccce,$199999,$ccccce
  1195.     dc    $e66668,$199999,$ccccce,$000000,$199999,$ccccce,$199999,$199999,$ccccce,$333333,$199999,$ccccce
  1196.     dc    $ccccce,$333333,$ccccce,$e66668,$333333,$ccccce,$000000,$333333,$ccccce,$199999,$333333,$ccccce
  1197.     dc    $333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$e66668,$ccccce,$e66668,$000000,$ccccce,$e66668
  1198.     dc    $199999,$ccccce,$e66668,$333333,$ccccce,$e66668,$ccccce,$e66668,$e66668,$e66668,$e66668,$e66668
  1199.     dc    $000000,$e66668,$e66668,$199999,$e66668,$e66668,$333333,$e66668,$e66668,$ccccce,$000000,$e66668
  1200.     dc    $e66668,$000000,$e66668,$000000,$000000,$e66668,$199999,$000000,$e66668,$333333,$000000,$e66668
  1201.     dc    $ccccce,$199999,$e66668,$e66668,$199999,$e66668,$000000,$199999,$e66668,$199999,$199999,$e66668
  1202.     dc    $333333,$199999,$e66668,$ccccce,$333333,$e66668,$e66668,$333333,$e66668,$000000,$333333,$e66668
  1203.     dc    $199999,$333333,$e66668,$333333,$333333,$e66668,$ccccce,$ccccce,$000000,$e66668,$ccccce,$000000
  1204.     dc    $000000,$ccccce,$000000,$199999,$ccccce,$000000,$333333,$ccccce,$000000,$ccccce,$e66668,$000000
  1205.     dc    $e66668,$e66668,$000000,$000000,$e66668,$000000,$199999,$e66668,$000000,$333333,$e66668,$000000
  1206.     dc    $ccccce,$000000,$000000,$e66668,$000000,$000000,$000000,$000000,$000000,$199999,$000000,$000000
  1207.     dc    $333333,$000000,$000000,$ccccce,$199999,$000000,$e66668,$199999,$000000,$000000,$199999,$000000
  1208.     dc    $199999,$199999,$000000,$333333,$199999,$000000,$ccccce,$333333,$000000,$e66668,$333333,$000000
  1209.     dc    $000000,$333333,$000000,$199999,$333333,$000000,$333333,$333333,$000000,$ccccce,$ccccce,$199999
  1210.     dc    $e66668,$ccccce,$199999,$000000,$ccccce,$199999,$199999,$ccccce,$199999,$333333,$ccccce,$199999
  1211.     dc    $ccccce,$e66668,$199999,$e66668,$e66668,$199999,$000000,$e66668,$199999,$199999,$e66668,$199999
  1212.     dc    $333333,$e66668,$199999,$ccccce,$000000,$199999,$e66668,$000000,$199999,$000000,$000000,$199999
  1213.     dc    $199999,$000000,$199999,$333333,$000000,$199999,$ccccce,$199999,$199999,$e66668,$199999,$199999
  1214.     dc    $000000,$199999,$199999,$199999,$199999,$199999,$333333,$199999,$199999,$ccccce,$333333,$199999
  1215.     dc    $e66668,$333333,$199999,$000000,$333333,$199999,$199999,$333333,$199999,$333333,$333333,$199999
  1216.     dc    $ccccce,$ccccce,$333333,$e66668,$ccccce,$333333,$000000,$ccccce,$333333,$199999,$ccccce,$333333
  1217.     dc    $333333,$ccccce,$333333,$ccccce,$e66668,$333333,$e66668,$e66668,$333333,$000000,$e66668,$333333
  1218.     dc    $199999,$e66668,$333333,$333333,$e66668,$333333,$ccccce,$000000,$333333,$e66668,$000000,$333333
  1219.     dc    $000000,$000000,$333333,$199999,$000000,$333333,$333333,$000000,$333333,$ccccce,$199999,$333333
  1220.     dc    $e66668,$199999,$333333,$000000,$199999,$333333,$199999,$199999,$333333,$333333,$199999,$333333
  1221.     dc    $ccccce,$333333,$333333,$e66668,$333333,$333333,$000000,$333333,$333333,$199999,$333333,$333333
  1222.     dc    $333333,$333333,$333333,$ccccce,$ccccce,$ccccce,$e66668,$ccccce,$ccccce,$000000,$ccccce,$ccccce
  1223. table_quantization_group_3
  1224.     dc    $c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73,$c71c73
  1225.     dc    $000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73,$c71c73
  1226.     dc    $38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73,$e38e3a,$d55557,$c71c73
  1227.     dc    $f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557,$c71c73
  1228.     dc    $2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a,$c71c73
  1229.     dc    $e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a,$c71c73
  1230.     dc    $1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e,$c71c73
  1231.     dc    $d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e,$c71c73
  1232.     dc    $0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e,$c71c73
  1233.     dc    $c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73,$f1c71e,$000000,$c71c73
  1234.     dc    $000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73,$2aaaaa,$000000,$c71c73
  1235.     dc    $38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3,$c71c73
  1236.     dc    $f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3,$c71c73
  1237.     dc    $2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7,$c71c73
  1238.     dc    $e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7,$c71c73
  1239.     dc    $1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa,$c71c73
  1240.     dc    $d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa,$c71c73
  1241.     dc    $0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa,$c71c73
  1242.     dc    $c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e,$c71c73
  1243.     dc    $000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e,$c71c73
  1244.     dc    $38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557,$e38e3a,$c71c73,$d55557
  1245.     dc    $f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557,$1c71c7,$c71c73,$d55557
  1246.     dc    $2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557,$d55557,$d55557,$d55557
  1247.     dc    $e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557,$0e38e3,$d55557,$d55557
  1248.     dc    $1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557,$c71c73,$e38e3a,$d55557
  1249.     dc    $d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557,$000000,$e38e3a,$d55557
  1250.     dc    $0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557,$38e38e,$e38e3a,$d55557
  1251.     dc    $c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557,$f1c71e,$f1c71e,$d55557
  1252.     dc    $000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557,$2aaaaa,$f1c71e,$d55557
  1253.     dc    $38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557,$e38e3a,$000000,$d55557
  1254.     dc    $f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557,$1c71c7,$000000,$d55557
  1255.     dc    $2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557,$d55557,$0e38e3,$d55557
  1256.     dc    $e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557,$0e38e3,$0e38e3,$d55557
  1257.     dc    $1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557,$c71c73,$1c71c7,$d55557
  1258.     dc    $d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557,$000000,$1c71c7,$d55557
  1259.     dc    $0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557,$38e38e,$1c71c7,$d55557
  1260.     dc    $c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557,$f1c71e,$2aaaaa,$d55557
  1261.     dc    $000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557,$2aaaaa,$2aaaaa,$d55557
  1262.     dc    $38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557,$e38e3a,$38e38e,$d55557
  1263.     dc    $f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557,$1c71c7,$38e38e,$d55557
  1264.     dc    $2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$d55557,$c71c73,$e38e3a
  1265.     dc    $e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a,$0e38e3,$c71c73,$e38e3a
  1266.     dc    $1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a,$c71c73,$d55557,$e38e3a
  1267.     dc    $d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a,$000000,$d55557,$e38e3a
  1268.     dc    $0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a,$38e38e,$d55557,$e38e3a
  1269.     dc    $c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$f1c71e,$e38e3a,$e38e3a
  1270.     dc    $000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$2aaaaa,$e38e3a,$e38e3a
  1271.     dc    $38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a,$e38e3a,$f1c71e,$e38e3a
  1272.     dc    $f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$1c71c7,$f1c71e,$e38e3a
  1273.     dc    $2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$d55557,$000000,$e38e3a
  1274.     dc    $e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a,$0e38e3,$000000,$e38e3a
  1275.     dc    $1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a,$c71c73,$0e38e3,$e38e3a
  1276.     dc    $d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$000000,$0e38e3,$e38e3a
  1277.     dc    $0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$38e38e,$0e38e3,$e38e3a
  1278.     dc    $c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$f1c71e,$1c71c7,$e38e3a
  1279.     dc    $000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$2aaaaa,$1c71c7,$e38e3a
  1280.     dc    $38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa,$e38e3a
  1281.     dc    $f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa,$e38e3a
  1282.     dc    $2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$d55557,$38e38e,$e38e3a
  1283.     dc    $e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a,$0e38e3,$38e38e,$e38e3a
  1284.     dc    $1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a,$c71c73,$c71c73,$f1c71e
  1285.     dc    $d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e,$000000,$c71c73,$f1c71e
  1286.     dc    $0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e,$38e38e,$c71c73,$f1c71e
  1287.     dc    $c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e,$f1c71e,$d55557,$f1c71e
  1288.     dc    $000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e,$2aaaaa,$d55557,$f1c71e
  1289.     dc    $38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e,$e38e3a,$e38e3a,$f1c71e
  1290.     dc    $f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$1c71c7,$e38e3a,$f1c71e
  1291.     dc    $2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$d55557,$f1c71e,$f1c71e
  1292.     dc    $e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e,$0e38e3,$f1c71e,$f1c71e
  1293.     dc    $1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e,$c71c73,$000000,$f1c71e
  1294.     dc    $d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e,$000000,$000000,$f1c71e
  1295.     dc    $0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e,$38e38e,$000000,$f1c71e
  1296.     dc    $c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$f1c71e,$0e38e3,$f1c71e
  1297.     dc    $000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$2aaaaa,$0e38e3,$f1c71e
  1298.     dc    $38e38e,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$d55557,$1c71c7,$f1c71e,$e38e3a,$1c71c7,$f1c71e
  1299.     dc    $f1c71e,$1c71c7,$f1c71e,$000000,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$1c71c7,$1c71c7,$f1c71e
  1300.     dc    $2aaaaa,$1c71c7,$f1c71e,$38e38e,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$d55557,$2aaaaa,$f1c71e
  1301.     dc    $e38e3a,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$000000,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa,$f1c71e
  1302.     dc    $1c71c7,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$c71c73,$38e38e,$f1c71e
  1303.     dc    $d55557,$38e38e,$f1c71e,$e38e3a,$38e38e,$f1c71e,$f1c71e,$38e38e,$f1c71e,$000000,$38e38e,$f1c71e
  1304.     dc    $0e38e3,$38e38e,$f1c71e,$1c71c7,$38e38e,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$38e38e,$38e38e,$f1c71e
  1305.     dc    $c71c73,$c71c73,$000000,$d55557,$c71c73,$000000,$e38e3a,$c71c73,$000000,$f1c71e,$c71c73,$000000
  1306.     dc    $000000,$c71c73,$000000,$0e38e3,$c71c73,$000000,$1c71c7,$c71c73,$000000,$2aaaaa,$c71c73,$000000
  1307.     dc    $38e38e,$c71c73,$000000,$c71c73,$d55557,$000000,$d55557,$d55557,$000000,$e38e3a,$d55557,$000000
  1308.     dc    $f1c71e,$d55557,$000000,$000000,$d55557,$000000,$0e38e3,$d55557,$000000,$1c71c7,$d55557,$000000
  1309.     dc    $2aaaaa,$d55557,$000000,$38e38e,$d55557,$000000,$c71c73,$e38e3a,$000000,$d55557,$e38e3a,$000000
  1310.     dc    $e38e3a,$e38e3a,$000000,$f1c71e,$e38e3a,$000000,$000000,$e38e3a,$000000,$0e38e3,$e38e3a,$000000
  1311.     dc    $1c71c7,$e38e3a,$000000,$2aaaaa,$e38e3a,$000000,$38e38e,$e38e3a,$000000,$c71c73,$f1c71e,$000000
  1312.     dc    $d55557,$f1c71e,$000000,$e38e3a,$f1c71e,$000000,$f1c71e,$f1c71e,$000000,$000000,$f1c71e,$000000
  1313.     dc    $0e38e3,$f1c71e,$000000,$1c71c7,$f1c71e,$000000,$2aaaaa,$f1c71e,$000000,$38e38e,$f1c71e,$000000
  1314.     dc    $c71c73,$000000,$000000,$d55557,$000000,$000000,$e38e3a,$000000,$000000,$f1c71e,$000000,$000000
  1315.     dc    $000000,$000000,$000000,$0e38e3,$000000,$000000,$1c71c7,$000000,$000000,$2aaaaa,$000000,$000000
  1316.     dc    $38e38e,$000000,$000000,$c71c73,$0e38e3,$000000,$d55557,$0e38e3,$000000,$e38e3a,$0e38e3,$000000
  1317.     dc    $f1c71e,$0e38e3,$000000,$000000,$0e38e3,$000000,$0e38e3,$0e38e3,$000000,$1c71c7,$0e38e3,$000000
  1318.     dc    $2aaaaa,$0e38e3,$000000,$38e38e,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$d55557,$1c71c7,$000000
  1319.     dc    $e38e3a,$1c71c7,$000000,$f1c71e,$1c71c7,$000000,$000000,$1c71c7,$000000,$0e38e3,$1c71c7,$000000
  1320.     dc    $1c71c7,$1c71c7,$000000,$2aaaaa,$1c71c7,$000000,$38e38e,$1c71c7,$000000,$c71c73,$2aaaaa,$000000
  1321.     dc    $d55557,$2aaaaa,$000000,$e38e3a,$2aaaaa,$000000,$f1c71e,$2aaaaa,$000000,$000000,$2aaaaa,$000000
  1322.     dc    $0e38e3,$2aaaaa,$000000,$1c71c7,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$000000,$38e38e,$2aaaaa,$000000
  1323.     dc    $c71c73,$38e38e,$000000,$d55557,$38e38e,$000000,$e38e3a,$38e38e,$000000,$f1c71e,$38e38e,$000000
  1324.     dc    $000000,$38e38e,$000000,$0e38e3,$38e38e,$000000,$1c71c7,$38e38e,$000000,$2aaaaa,$38e38e,$000000
  1325.     dc    $38e38e,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$d55557,$c71c73,$0e38e3,$e38e3a,$c71c73,$0e38e3
  1326.     dc    $f1c71e,$c71c73,$0e38e3,$000000,$c71c73,$0e38e3,$0e38e3,$c71c73,$0e38e3,$1c71c7,$c71c73,$0e38e3
  1327.     dc    $2aaaaa,$c71c73,$0e38e3,$38e38e,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$d55557,$d55557,$0e38e3
  1328.     dc    $e38e3a,$d55557,$0e38e3,$f1c71e,$d55557,$0e38e3,$000000,$d55557,$0e38e3,$0e38e3,$d55557,$0e38e3
  1329.     dc    $1c71c7,$d55557,$0e38e3,$2aaaaa,$d55557,$0e38e3,$38e38e,$d55557,$0e38e3,$c71c73,$e38e3a,$0e38e3
  1330.     dc    $d55557,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$000000,$e38e3a,$0e38e3
  1331.     dc    $0e38e3,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$38e38e,$e38e3a,$0e38e3
  1332.     dc    $c71c73,$f1c71e,$0e38e3,$d55557,$f1c71e,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$f1c71e,$f1c71e,$0e38e3
  1333.     dc    $000000,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$2aaaaa,$f1c71e,$0e38e3
  1334.     dc    $38e38e,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$d55557,$000000,$0e38e3,$e38e3a,$000000,$0e38e3
  1335.     dc    $f1c71e,$000000,$0e38e3,$000000,$000000,$0e38e3,$0e38e3,$000000,$0e38e3,$1c71c7,$000000,$0e38e3
  1336.     dc    $2aaaaa,$000000,$0e38e3,$38e38e,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$d55557,$0e38e3,$0e38e3
  1337.     dc    $e38e3a,$0e38e3,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$000000,$0e38e3,$0e38e3,$0e38e3,$0e38e3,$0e38e3
  1338.     dc    $1c71c7,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$38e38e,$0e38e3,$0e38e3,$c71c73,$1c71c7,$0e38e3
  1339.     dc    $d55557,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$000000,$1c71c7,$0e38e3
  1340.     dc    $0e38e3,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$38e38e,$1c71c7,$0e38e3
  1341.     dc    $c71c73,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa,$0e38e3
  1342.     dc    $000000,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3
  1343.     dc    $38e38e,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$d55557,$38e38e,$0e38e3,$e38e3a,$38e38e,$0e38e3
  1344.     dc    $f1c71e,$38e38e,$0e38e3,$000000,$38e38e,$0e38e3,$0e38e3,$38e38e,$0e38e3,$1c71c7,$38e38e,$0e38e3
  1345.     dc    $2aaaaa,$38e38e,$0e38e3,$38e38e,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$d55557,$c71c73,$1c71c7
  1346.     dc    $e38e3a,$c71c73,$1c71c7,$f1c71e,$c71c73,$1c71c7,$000000,$c71c73,$1c71c7,$0e38e3,$c71c73,$1c71c7
  1347.     dc    $1c71c7,$c71c73,$1c71c7,$2aaaaa,$c71c73,$1c71c7,$38e38e,$c71c73,$1c71c7,$c71c73,$d55557,$1c71c7
  1348.     dc    $d55557,$d55557,$1c71c7,$e38e3a,$d55557,$1c71c7,$f1c71e,$d55557,$1c71c7,$000000,$d55557,$1c71c7
  1349.     dc    $0e38e3,$d55557,$1c71c7,$1c71c7,$d55557,$1c71c7,$2aaaaa,$d55557,$1c71c7,$38e38e,$d55557,$1c71c7
  1350.     dc    $c71c73,$e38e3a,$1c71c7,$d55557,$e38e3a,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$f1c71e,$e38e3a,$1c71c7
  1351.     dc    $000000,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$2aaaaa,$e38e3a,$1c71c7
  1352.     dc    $38e38e,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$d55557,$f1c71e,$1c71c7,$e38e3a,$f1c71e,$1c71c7
  1353.     dc    $f1c71e,$f1c71e,$1c71c7,$000000,$f1c71e,$1c71c7,$0e38e3,$f1c71e,$1c71c7,$1c71c7,$f1c71e,$1c71c7
  1354.     dc    $2aaaaa,$f1c71e,$1c71c7,$38e38e,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$d55557,$000000,$1c71c7
  1355.     dc    $e38e3a,$000000,$1c71c7,$f1c71e,$000000,$1c71c7,$000000,$000000,$1c71c7,$0e38e3,$000000,$1c71c7
  1356.     dc    $1c71c7,$000000,$1c71c7,$2aaaaa,$000000,$1c71c7,$38e38e,$000000,$1c71c7,$c71c73,$0e38e3,$1c71c7
  1357.     dc    $d55557,$0e38e3,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$f1c71e,$0e38e3,$1c71c7,$000000,$0e38e3,$1c71c7
  1358.     dc    $0e38e3,$0e38e3,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$38e38e,$0e38e3,$1c71c7
  1359.     dc    $c71c73,$1c71c7,$1c71c7,$d55557,$1c71c7,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$f1c71e,$1c71c7,$1c71c7
  1360.     dc    $000000,$1c71c7,$1c71c7,$0e38e3,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$1c71c7,$2aaaaa,$1c71c7,$1c71c7
  1361.     dc    $38e38e,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa,$1c71c7
  1362.     dc    $f1c71e,$2aaaaa,$1c71c7,$000000,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa,$1c71c7
  1363.     dc    $2aaaaa,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$d55557,$38e38e,$1c71c7
  1364.     dc    $e38e3a,$38e38e,$1c71c7,$f1c71e,$38e38e,$1c71c7,$000000,$38e38e,$1c71c7,$0e38e3,$38e38e,$1c71c7
  1365.     dc    $1c71c7,$38e38e,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$38e38e,$38e38e,$1c71c7,$c71c73,$c71c73,$2aaaaa
  1366.     dc    $d55557,$c71c73,$2aaaaa,$e38e3a,$c71c73,$2aaaaa,$f1c71e,$c71c73,$2aaaaa,$000000,$c71c73,$2aaaaa
  1367.     dc    $0e38e3,$c71c73,$2aaaaa,$1c71c7,$c71c73,$2aaaaa,$2aaaaa,$c71c73,$2aaaaa,$38e38e,$c71c73,$2aaaaa
  1368.     dc    $c71c73,$d55557,$2aaaaa,$d55557,$d55557,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$f1c71e,$d55557,$2aaaaa
  1369.     dc    $000000,$d55557,$2aaaaa,$0e38e3,$d55557,$2aaaaa,$1c71c7,$d55557,$2aaaaa,$2aaaaa,$d55557,$2aaaaa
  1370.     dc    $38e38e,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$e38e3a,$e38e3a,$2aaaaa
  1371.     dc    $f1c71e,$e38e3a,$2aaaaa,$000000,$e38e3a,$2aaaaa,$0e38e3,$e38e3a,$2aaaaa,$1c71c7,$e38e3a,$2aaaaa
  1372.     dc    $2aaaaa,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$d55557,$f1c71e,$2aaaaa
  1373.     dc    $e38e3a,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$2aaaaa,$000000,$f1c71e,$2aaaaa,$0e38e3,$f1c71e,$2aaaaa
  1374.     dc    $1c71c7,$f1c71e,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$c71c73,$000000,$2aaaaa
  1375.     dc    $d55557,$000000,$2aaaaa,$e38e3a,$000000,$2aaaaa,$f1c71e,$000000,$2aaaaa,$000000,$000000,$2aaaaa
  1376.     dc    $0e38e3,$000000,$2aaaaa,$1c71c7,$000000,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$38e38e,$000000,$2aaaaa
  1377.     dc    $c71c73,$0e38e3,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$f1c71e,$0e38e3,$2aaaaa
  1378.     dc    $000000,$0e38e3,$2aaaaa,$0e38e3,$0e38e3,$2aaaaa,$1c71c7,$0e38e3,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa
  1379.     dc    $38e38e,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$e38e3a,$1c71c7,$2aaaaa
  1380.     dc    $f1c71e,$1c71c7,$2aaaaa,$000000,$1c71c7,$2aaaaa,$0e38e3,$1c71c7,$2aaaaa,$1c71c7,$1c71c7,$2aaaaa
  1381.     dc    $2aaaaa,$1c71c7,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$d55557,$2aaaaa,$2aaaaa
  1382.     dc    $e38e3a,$2aaaaa,$2aaaaa,$f1c71e,$2aaaaa,$2aaaaa,$000000,$2aaaaa,$2aaaaa,$0e38e3,$2aaaaa,$2aaaaa
  1383.     dc    $1c71c7,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$c71c73,$38e38e,$2aaaaa
  1384.     dc    $d55557,$38e38e,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$f1c71e,$38e38e,$2aaaaa,$000000,$38e38e,$2aaaaa
  1385.     dc    $0e38e3,$38e38e,$2aaaaa,$1c71c7,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$2aaaaa,$38e38e,$38e38e,$2aaaaa
  1386.     dc    $c71c73,$c71c73,$38e38e,$d55557,$c71c73,$38e38e,$e38e3a,$c71c73,$38e38e,$f1c71e,$c71c73,$38e38e
  1387.     dc    $000000,$c71c73,$38e38e,$0e38e3,$c71c73,$38e38e,$1c71c7,$c71c73,$38e38e,$2aaaaa,$c71c73,$38e38e
  1388.     dc    $38e38e,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$d55557,$d55557,$38e38e,$e38e3a,$d55557,$38e38e
  1389.     dc    $f1c71e,$d55557,$38e38e,$000000,$d55557,$38e38e,$0e38e3,$d55557,$38e38e,$1c71c7,$d55557,$38e38e
  1390.     dc    $2aaaaa,$d55557,$38e38e,$38e38e,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$d55557,$e38e3a,$38e38e
  1391.     dc    $e38e3a,$e38e3a,$38e38e,$f1c71e,$e38e3a,$38e38e,$000000,$e38e3a,$38e38e,$0e38e3,$e38e3a,$38e38e
  1392.     dc    $1c71c7,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$38e38e,$38e38e,$e38e3a,$38e38e,$c71c73,$f1c71e,$38e38e
  1393.     dc    $d55557,$f1c71e,$38e38e,$e38e3a,$f1c71e,$38e38e,$f1c71e,$f1c71e,$38e38e,$000000,$f1c71e,$38e38e
  1394.     dc    $0e38e3,$f1c71e,$38e38e,$1c71c7,$f1c71e,$38e38e,$2aaaaa,$f1c71e,$38e38e,$38e38e,$f1c71e,$38e38e
  1395.     dc    $c71c73,$000000,$38e38e,$d55557,$000000,$38e38e,$e38e3a,$000000,$38e38e,$f1c71e,$000000,$38e38e
  1396.     dc    $000000,$000000,$38e38e,$0e38e3,$000000,$38e38e,$1c71c7,$000000,$38e38e,$2aaaaa,$000000,$38e38e
  1397.     dc    $38e38e,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$d55557,$0e38e3,$38e38e,$e38e3a,$0e38e3,$38e38e
  1398.     dc    $f1c71e,$0e38e3,$38e38e,$000000,$0e38e3,$38e38e,$0e38e3,$0e38e3,$38e38e,$1c71c7,$0e38e3,$38e38e
  1399.     dc    $2aaaaa,$0e38e3,$38e38e,$38e38e,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$d55557,$1c71c7,$38e38e
  1400.     dc    $e38e3a,$1c71c7,$38e38e,$f1c71e,$1c71c7,$38e38e,$000000,$1c71c7,$38e38e,$0e38e3,$1c71c7,$38e38e
  1401.     dc    $1c71c7,$1c71c7,$38e38e,$2aaaaa,$1c71c7,$38e38e,$38e38e,$1c71c7,$38e38e,$c71c73,$2aaaaa,$38e38e
  1402.     dc    $d55557,$2aaaaa,$38e38e,$e38e3a,$2aaaaa,$38e38e,$f1c71e,$2aaaaa,$38e38e,$000000,$2aaaaa,$38e38e
  1403.     dc    $0e38e3,$2aaaaa,$38e38e,$1c71c7,$2aaaaa,$38e38e,$2aaaaa,$2aaaaa,$38e38e,$38e38e,$2aaaaa,$38e38e
  1404.     dc    $c71c73,$38e38e,$38e38e,$d55557,$38e38e,$38e38e,$e38e3a,$38e38e,$38e38e,$f1c71e,$38e38e,$38e38e
  1405.     dc    $000000,$38e38e,$38e38e,$0e38e3,$38e38e,$38e38e,$1c71c7,$38e38e,$38e38e,$2aaaaa,$38e38e,$38e38e
  1406.     dc    $38e38e,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73,$c71c73
  1407.     dc    $f1c71e,$c71c73,$c71c73,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73,$c71c73
  1408.     dc    $2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$c71c73,$d55557,$d55557,$c71c73
  1409.     dc    $e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$c71c73,$000000,$d55557,$c71c73,$0e38e3,$d55557,$c71c73
  1410.     dc    $1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a,$c71c73
  1411.     dc    $d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a,$c71c73
  1412.     dc    $0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a,$c71c73
  1413.     dc    $c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e,$c71c73
  1414.     dc    $000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$c71c73,$1c71c7,$f1c71e,$c71c73,$2aaaaa,$f1c71e,$c71c73
  1415.     dc    $38e38e,$f1c71e,$c71c73,$c71c73,$000000,$c71c73,$d55557,$000000,$c71c73,$e38e3a,$000000,$c71c73
  1416.     dc    $f1c71e,$000000,$c71c73,$000000,$000000,$c71c73,$0e38e3,$000000,$c71c73,$1c71c7,$000000,$c71c73
  1417.     dc    $2aaaaa,$000000,$c71c73,$38e38e,$000000,$c71c73,$c71c73,$0e38e3,$c71c73,$d55557,$0e38e3,$c71c73
  1418.     dc    $e38e3a,$0e38e3,$c71c73,$f1c71e,$0e38e3,$c71c73,$000000,$0e38e3,$c71c73,$0e38e3,$0e38e3,$c71c73
  1419.     dc    $1c71c7,$0e38e3,$c71c73,$2aaaaa,$0e38e3,$c71c73,$38e38e,$0e38e3,$c71c73,$c71c73,$1c71c7,$c71c73
  1420.     dc    $d55557,$1c71c7,$c71c73,$e38e3a,$1c71c7,$c71c73,$f1c71e,$1c71c7,$c71c73,$000000,$1c71c7,$c71c73
  1421.     dc    $0e38e3,$1c71c7,$c71c73,$1c71c7,$1c71c7,$c71c73,$2aaaaa,$1c71c7,$c71c73,$38e38e,$1c71c7,$c71c73
  1422.     dc    $c71c73,$2aaaaa,$c71c73,$d55557,$2aaaaa,$c71c73,$e38e3a,$2aaaaa,$c71c73,$f1c71e,$2aaaaa,$c71c73
  1423.     dc    $000000,$2aaaaa,$c71c73,$0e38e3,$2aaaaa,$c71c73,$1c71c7,$2aaaaa,$c71c73,$2aaaaa,$2aaaaa,$c71c73
  1424.     dc    $38e38e,$2aaaaa,$c71c73,$c71c73,$38e38e,$c71c73,$d55557,$38e38e,$c71c73,$e38e3a,$38e38e,$c71c73
  1425.     dc    $f1c71e,$38e38e,$c71c73,$000000,$38e38e,$c71c73,$0e38e3,$38e38e,$c71c73,$1c71c7,$38e38e,$c71c73
  1426.     dc    $2aaaaa,$38e38e,$c71c73,$38e38e,$38e38e,$c71c73,$c71c73,$c71c73,$d55557,$d55557,$c71c73,$d55557
  1427.     dc    $e38e3a,$c71c73,$d55557,$f1c71e,$c71c73,$d55557,$000000,$c71c73,$d55557,$0e38e3,$c71c73,$d55557
  1428.     dc    $1c71c7,$c71c73,$d55557,$2aaaaa,$c71c73,$d55557,$38e38e,$c71c73,$d55557,$c71c73,$d55557,$d55557
  1429.     dc    $d55557,$d55557,$d55557,$e38e3a,$d55557,$d55557,$f1c71e,$d55557,$d55557,$000000,$d55557,$d55557
  1430.     dc    $0e38e3,$d55557,$d55557,$1c71c7,$d55557,$d55557,$2aaaaa,$d55557,$d55557,$38e38e,$d55557,$d55557
  1431.     dc    $c71c73,$e38e3a,$d55557,$d55557,$e38e3a,$d55557,$e38e3a,$e38e3a,$d55557,$f1c71e,$e38e3a,$d55557
  1432.     dc    $000000,$e38e3a,$d55557,$0e38e3,$e38e3a,$d55557,$1c71c7,$e38e3a,$d55557,$2aaaaa,$e38e3a,$d55557
  1433.     dc    $38e38e,$e38e3a,$d55557,$c71c73,$f1c71e,$d55557,$d55557,$f1c71e,$d55557,$e38e3a,$f1c71e,$d55557
  1434.     dc    $f1c71e,$f1c71e,$d55557,$000000,$f1c71e,$d55557,$0e38e3,$f1c71e,$d55557,$1c71c7,$f1c71e,$d55557
  1435.     dc    $2aaaaa,$f1c71e,$d55557,$38e38e,$f1c71e,$d55557,$c71c73,$000000,$d55557,$d55557,$000000,$d55557
  1436.     dc    $e38e3a,$000000,$d55557,$f1c71e,$000000,$d55557,$000000,$000000,$d55557,$0e38e3,$000000,$d55557
  1437.     dc    $1c71c7,$000000,$d55557,$2aaaaa,$000000,$d55557,$38e38e,$000000,$d55557,$c71c73,$0e38e3,$d55557
  1438.     dc    $d55557,$0e38e3,$d55557,$e38e3a,$0e38e3,$d55557,$f1c71e,$0e38e3,$d55557,$000000,$0e38e3,$d55557
  1439.     dc    $0e38e3,$0e38e3,$d55557,$1c71c7,$0e38e3,$d55557,$2aaaaa,$0e38e3,$d55557,$38e38e,$0e38e3,$d55557
  1440.     dc    $c71c73,$1c71c7,$d55557,$d55557,$1c71c7,$d55557,$e38e3a,$1c71c7,$d55557,$f1c71e,$1c71c7,$d55557
  1441.     dc    $000000,$1c71c7,$d55557,$0e38e3,$1c71c7,$d55557,$1c71c7,$1c71c7,$d55557,$2aaaaa,$1c71c7,$d55557
  1442.     dc    $38e38e,$1c71c7,$d55557,$c71c73,$2aaaaa,$d55557,$d55557,$2aaaaa,$d55557,$e38e3a,$2aaaaa,$d55557
  1443.     dc    $f1c71e,$2aaaaa,$d55557,$000000,$2aaaaa,$d55557,$0e38e3,$2aaaaa,$d55557,$1c71c7,$2aaaaa,$d55557
  1444.     dc    $2aaaaa,$2aaaaa,$d55557,$38e38e,$2aaaaa,$d55557,$c71c73,$38e38e,$d55557,$d55557,$38e38e,$d55557
  1445.     dc    $e38e3a,$38e38e,$d55557,$f1c71e,$38e38e,$d55557,$000000,$38e38e,$d55557,$0e38e3,$38e38e,$d55557
  1446.     dc    $1c71c7,$38e38e,$d55557,$2aaaaa,$38e38e,$d55557,$38e38e,$38e38e,$d55557,$c71c73,$c71c73,$e38e3a
  1447.     dc    $d55557,$c71c73,$e38e3a,$e38e3a,$c71c73,$e38e3a,$f1c71e,$c71c73,$e38e3a,$000000,$c71c73,$e38e3a
  1448.     dc    $0e38e3,$c71c73,$e38e3a,$1c71c7,$c71c73,$e38e3a,$2aaaaa,$c71c73,$e38e3a,$38e38e,$c71c73,$e38e3a
  1449.     dc    $c71c73,$d55557,$e38e3a,$d55557,$d55557,$e38e3a,$e38e3a,$d55557,$e38e3a,$f1c71e,$d55557,$e38e3a
  1450.     dc    $000000,$d55557,$e38e3a,$0e38e3,$d55557,$e38e3a,$1c71c7,$d55557,$e38e3a,$2aaaaa,$d55557,$e38e3a
  1451.     dc    $38e38e,$d55557,$e38e3a,$c71c73,$e38e3a,$e38e3a,$d55557,$e38e3a,$e38e3a,$e38e3a,$e38e3a,$e38e3a
  1452.     dc    $f1c71e,$e38e3a,$e38e3a,$000000,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$e38e3a,$1c71c7,$e38e3a,$e38e3a
  1453.     dc    $2aaaaa,$e38e3a,$e38e3a,$38e38e,$e38e3a,$e38e3a,$c71c73,$f1c71e,$e38e3a,$d55557,$f1c71e,$e38e3a
  1454.     dc    $e38e3a,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$000000,$f1c71e,$e38e3a,$0e38e3,$f1c71e,$e38e3a
  1455.     dc    $1c71c7,$f1c71e,$e38e3a,$2aaaaa,$f1c71e,$e38e3a,$38e38e,$f1c71e,$e38e3a,$c71c73,$000000,$e38e3a
  1456.     dc    $d55557,$000000,$e38e3a,$e38e3a,$000000,$e38e3a,$f1c71e,$000000,$e38e3a,$000000,$000000,$e38e3a
  1457.     dc    $0e38e3,$000000,$e38e3a,$1c71c7,$000000,$e38e3a,$2aaaaa,$000000,$e38e3a,$38e38e,$000000,$e38e3a
  1458.     dc    $c71c73,$0e38e3,$e38e3a,$d55557,$0e38e3,$e38e3a,$e38e3a,$0e38e3,$e38e3a,$f1c71e,$0e38e3,$e38e3a
  1459.     dc    $000000,$0e38e3,$e38e3a,$0e38e3,$0e38e3,$e38e3a,$1c71c7,$0e38e3,$e38e3a,$2aaaaa,$0e38e3,$e38e3a
  1460.     dc    $38e38e,$0e38e3,$e38e3a,$c71c73,$1c71c7,$e38e3a,$d55557,$1c71c7,$e38e3a,$e38e3a,$1c71c7,$e38e3a
  1461.     dc    $f1c71e,$1c71c7,$e38e3a,$000000,$1c71c7,$e38e3a,$0e38e3,$1c71c7,$e38e3a,$1c71c7,$1c71c7,$e38e3a
  1462.     dc    $2aaaaa,$1c71c7,$e38e3a,$38e38e,$1c71c7,$e38e3a,$c71c73,$2aaaaa,$e38e3a,$d55557,$2aaaaa,$e38e3a
  1463.     dc    $e38e3a,$2aaaaa,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$000000,$2aaaaa,$e38e3a,$0e38e3,$2aaaaa,$e38e3a
  1464.     dc    $1c71c7,$2aaaaa,$e38e3a,$2aaaaa,$2aaaaa,$e38e3a,$38e38e,$2aaaaa,$e38e3a,$c71c73,$38e38e,$e38e3a
  1465.     dc    $d55557,$38e38e,$e38e3a,$e38e3a,$38e38e,$e38e3a,$f1c71e,$38e38e,$e38e3a,$000000,$38e38e,$e38e3a
  1466.     dc    $0e38e3,$38e38e,$e38e3a,$1c71c7,$38e38e,$e38e3a,$2aaaaa,$38e38e,$e38e3a,$38e38e,$38e38e,$e38e3a
  1467.     dc    $c71c73,$c71c73,$f1c71e,$d55557,$c71c73,$f1c71e,$e38e3a,$c71c73,$f1c71e,$f1c71e,$c71c73,$f1c71e
  1468.     dc    $000000,$c71c73,$f1c71e,$0e38e3,$c71c73,$f1c71e,$1c71c7,$c71c73,$f1c71e,$2aaaaa,$c71c73,$f1c71e
  1469.     dc    $38e38e,$c71c73,$f1c71e,$c71c73,$d55557,$f1c71e,$d55557,$d55557,$f1c71e,$e38e3a,$d55557,$f1c71e
  1470.     dc    $f1c71e,$d55557,$f1c71e,$000000,$d55557,$f1c71e,$0e38e3,$d55557,$f1c71e,$1c71c7,$d55557,$f1c71e
  1471.     dc    $2aaaaa,$d55557,$f1c71e,$38e38e,$d55557,$f1c71e,$c71c73,$e38e3a,$f1c71e,$d55557,$e38e3a,$f1c71e
  1472.     dc    $e38e3a,$e38e3a,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$000000,$e38e3a,$f1c71e,$0e38e3,$e38e3a,$f1c71e
  1473.     dc    $1c71c7,$e38e3a,$f1c71e,$2aaaaa,$e38e3a,$f1c71e,$38e38e,$e38e3a,$f1c71e,$c71c73,$f1c71e,$f1c71e
  1474.     dc    $d55557,$f1c71e,$f1c71e,$e38e3a,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$f1c71e,$000000,$f1c71e,$f1c71e
  1475.     dc    $0e38e3,$f1c71e,$f1c71e,$1c71c7,$f1c71e,$f1c71e,$2aaaaa,$f1c71e,$f1c71e,$38e38e,$f1c71e,$f1c71e
  1476.     dc    $c71c73,$000000,$f1c71e,$d55557,$000000,$f1c71e,$e38e3a,$000000,$f1c71e,$f1c71e,$000000,$f1c71e
  1477.     dc    $000000,$000000,$f1c71e,$0e38e3,$000000,$f1c71e,$1c71c7,$000000,$f1c71e,$2aaaaa,$000000,$f1c71e
  1478.     dc    $38e38e,$000000,$f1c71e,$c71c73,$0e38e3,$f1c71e,$d55557,$0e38e3,$f1c71e,$e38e3a,$0e38e3,$f1c71e
  1479.     dc    $f1c71e,$0e38e3,$f1c71e,$000000,$0e38e3,$f1c71e,$0e38e3,$0e38e3,$f1c71e,$1c71c7,$0e38e3,$f1c71e
  1480.  
  1481. ;; Sampling tables
  1482. table_quantizations_01
  1483.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1484.     dc    00,00,01,03,04,05,06,07,08,09,10,11,12,13,14,15
  1485.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1486.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1487.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1488.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1489.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1490.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1491.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1492.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1493.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1494.     dc    00,00,01,03,04,05,06,07,00,00,00,00,00,00,00,00
  1495. table_quantizations_23
  1496.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1497.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1498.     dc    00,00,02,04,05,06,07,08,09,10,11,12,13,14,15,16
  1499.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1500.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1501.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1502.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1503.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1504.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1505.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1506.     dc    00,00,01,02,03,04,05,06,07,08,09,10,11,12,13,16
  1507.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1508.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1509.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1510.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1511.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1512.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1513.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1514.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1515.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1516.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1517.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1518.     dc    00,00,01,02,03,04,05,16,00,00,00,00,00,00,00,00
  1519.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1520.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1521.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1522.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1523.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1524.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1525.     dc    00,00,01,16,00,00,00,00,00,00,00,00,00,00,00,00
  1526.  
  1527. ;; A combination of the x, d and c tables. The `m' stands
  1528. ;; for the multiplicator using 1.0/x. NOTE: Table c is
  1529. ;; subtracted by 1.0.
  1530. table_xmdc
  1531.     dc    $000001,$100000,$200000,$2aaaab
  1532.     dc    $000003,$080000,$200000,$4ccccd
  1533.     dc    $000003,$080000,$100000,$124925
  1534.     dc    $000007,$040000,$200000,$638e39
  1535.     dc    $000007,$040000,$080000,$088889
  1536.     dc    $00000f,$020000,$040000,$042108
  1537.     dc    $00001f,$010000,$020000,$020821
  1538.     dc    $00003f,$008000,$010000,$010204
  1539.     dc    $00007f,$004000,$008000,$008081
  1540.     dc    $0000ff,$002000,$004000,$004020
  1541.     dc    $0001ff,$001000,$002000,$002008
  1542.     dc    $0003ff,$000800,$001000,$001002
  1543.     dc    $0007ff,$000400,$000800,$000801
  1544.     dc    $000fff,$000200,$000400,$000400
  1545.     dc    $001fff,$000100,$000200,$000200
  1546.     dc    $003fff,$000080,$000100,$000100
  1547.     dc    $007fff,$000040,$000080,$000080
  1548.  
  1549. ;; The `multiply' table used in the last step of sample
  1550. ;; requantization. NOTE: All values are divided by two.
  1551. table_multiple
  1552.     dc    $7fffff,$6597fb,$50a28c,$400000
  1553.     dc    $32cbfd,$285146,$200000,$1965ff
  1554.     dc    $1428a3,$100000,$0cb2ff,$0a1451
  1555.     dc    $080000,$065980,$050a29,$040000
  1556.     dc    $032cc0,$028514,$020000,$019660
  1557.     dc    $01428a,$010000,$00cb30,$00a145
  1558.     dc    $008000,$006598,$0050a3,$004000
  1559.     dc    $0032cc,$002851,$002000,$001966
  1560.     dc    $001429,$001000,$000cb3,$000a14
  1561.     dc    $000800,$000659,$00050a,$000400
  1562.     dc    $00032d,$000285,$000200,$000196
  1563.     dc    $000143,$000100,$0000cb,$0000a1
  1564.     dc    $000080,$000066,$000051,$000040
  1565.     dc    $000033,$000028,$000020,$000019
  1566.     dc    $000014,$000010,$00000d,$00000a
  1567.     dc    $000008,$000006,$000005,$000000
  1568.  
  1569. table_bits
  1570.     dc    5,7,3,10,4,5,6,7,8,9
  1571.     dc    10,11,12,13,14,15,16
  1572.  
  1573. table_translate_quantizations
  1574.     dc    table_quantizations_23
  1575.     dc    table_quantizations_23
  1576.     dc    table_quantizations_01
  1577.     dc    table_quantizations_01
  1578. table_translate_sblimit
  1579.     dc    27,30,8,12
  1580. table_translate_alloc
  1581.     dc    alloc0_bits0
  1582.     dc    alloc1_bits0
  1583.     dc    alloc2_bits0
  1584.     dc    alloc3_bits0
  1585. alloc0_bits0    ;sblimit=27
  1586. alloc1_bits0    ;sblimit=30
  1587.     dc    4,4,4,4,4,4,4,4,4,4,4    ; 11
  1588.     dc    3,3,3,3,3,3,3,3,3,3,3,3    ;+12
  1589.     dc    2,2,2,2            ;+04 = 27
  1590.     dc    2,2,2            ;+03 = 30
  1591. alloc2_bits0    ;sblimit=08
  1592. alloc3_bits0    ;sblimit=12
  1593.     dc    4,4            ; 02
  1594.     dc    3,3,3,3,3,3        ;+06 = 08
  1595.     dc    3,3,3,3            ;+04 = 12
  1596.